<?php

namespace app\admin\controller\subject;

//引入进来基类控制器
use app\common\controller\Backend;

/**
 * 课程管理控制器
 */
class Category extends Backend
{
  //设置关联查询
  // 如果不设置这个，则会出现id冲突
  protected $relationSearch = true;

  //当前模型
  protected $model = null;

  //当前无须登录方法
  protected $noNeedLogin = [];

  //无需鉴权的方法,但需要登录
  protected $noNeedRight = [];

  //构造函数
  public function __construct()
  {
    parent::__construct();

    //将控制器和模型关联
    $this->model = model('Subject.Category');
  }

  // 列表
  public function index()
  {

    //将请求当中所有的参数去除html标签，去掉两边空白
    $this->request->filter(['strip_tags', 'trim']);

    // 判断是否有ajax
    if ($this->request->isAjax()) {
      //获取表格所提交过来筛选和排序的一些参数
      // 偏移量：$offset， 每页显示多少：$limit
      list($where, $sort, $order, $offset, $limit) = $this->buildparams();

      // 表格需要两个返回值参数 总条数，分页的数据
      // 总条数
      $total = $this->model
        ->where($where)
        ->order($sort, $order)
        ->count();

      // 每一页展示的数据
      $list = $this->model
        ->where($where)
        ->order($sort, $order)
        ->limit($offset, $limit)
        ->select();

      // 组装数据
      $result = [
        'total' => $total,
        'rows' => $list,
      ];

      // 返回json格式数据给ajax
      return json($result);
    }

    // 模板渲染
    return $this->view->fetch();
  }

  // 添加
  public function add()
  {
    // 判断是否有post请求
    if ($this->request->isPost()) {

      //接收row前缀的数据，并接收为数组类型
      $params = $this->request->param('row/a');

      // 组装数据
      $data = [
        'name' => $params['name'],
        'weight' => $params['weight']
      ];

      // 执行插入语句，并使用验证器
      $result = $this->model->validate('common/Subject/Category')->save($data);

      if ($result === FALSE) {
        $this->error($this->model->getError());
        exit;
      } else {
        $this->success('添加课程分类成功');
        exit;
      }
    }

    // 模板渲染
    return $this->view->fetch();
  }

  // 编辑
  public function edit($ids = null)
  {

    // 根据id判断数据是否存在
    $row = $this->model->find($ids);

    //数据丢失，记录不存在
    if (!$row) {
      $this->error(__('No Results were found'));
      exit;
    }

    // 判断是否有post请求
    if ($this->request->isPost()) {
      // 接收row前缀请求参数，并返回一个数组类型
      $params = $this->request->param('row/a');

      // 组装数据
      $data = [
        'id' => $ids,
        'name' => $params['name'],
        'weight' => $params['weight']
      ];

      // 更新
      $result = $this->model->validate('common/Subject/Category')->isUpdate(true)->save($data);

      // 判断更新是否成功
      if ($result === FALSE) {
        $this->error($this->model->getError());
        exit;
      }

      $this->success('编辑课程成功');
      exit;
    }

    // 将数据赋值到模板中
    $this->assign('row', $row);

    // 模板渲染
    return $this->view->fetch();
  }
}
